/*
 * 前提需要在ui界面提升类
 * 事件处理流程：事件派发->事件过滤->事件分发->事件处理
 * mytextedit是针对 事件处理 所做的自定义的操作
 * 事件过滤阶段的操作可以使用：
 *  1.安装注事件过滤器
 *  2.重写事件过滤函数
 *  3.如果遇到两个事件例如：ctrl+wheel 可以采用 QGuiApplication里面的获取键盘按键来解决
*/
#include "mytextedit.h"
#include "widget.h"

#include <QWheelEvent>
#include <QDebug>

MyTextEdit::MyTextEdit(QWidget *parent) : QTextEdit(parent)
{

}

void MyTextEdit::wheelEvent(QWheelEvent *e)
{
    if(ctrlKeyPressed == 1){
        if(e->angleDelta().y() > 0){
            zoomIn();
        }else if(e->angleDelta().y() < 0){
            zoomOut();
        }
        e->accept();
    }else if(ctrlKeyPressed == 0){
        QTextEdit::wheelEvent(e);
    }
}

void MyTextEdit::keyPressEvent(QKeyEvent *e)
{
    if(e->key() == Qt::Key_Control){
        ctrlKeyPressed = 1;
    } else {
        // 调用父类方法处理其他键盘事件
        QTextEdit::keyPressEvent(e);
    }
}

void MyTextEdit::keyReleaseEvent(QKeyEvent *e)
{
    if(e->key() == Qt::Key_Control){
        ctrlKeyPressed = 0;
    }
}
